Data Manager を使ってクラウド環境のログを簡単に収集する!#Splunk Cloud
Data Manager は、パブリッククラウド(AWS、Azure、Google Cloud)のサービスやリソースのデータを Splunk Cloud に取り込むためのツールです。
従来、ログ収集のためにデータパイプラインをセットアップしていましたが、DataManager を使うと各クラウドの IaaS テンプレートを展開して簡単にデータ収集を始められます。
- AWS だと、AWS CloudFormation
- Azure だと、Azure Resource Manager
- Google Cloud だと、Terraform
本ブログでは Data Manager を使って、具体的にどんな流れでログを収集できるのかについて AWS を例にお伝えしていきます。
Data Manager のセットアップ
Data Manager は App の中にデフォルトでインストールされています。
Splunk Cloud のコンソールにアクセスし「App」→「Data Manager」を選択します。
以下の画面が表示されたら「New Data Input」を選択します。
次に以下の画面が表示されます。「AWS」を選択します。
そしたら、収集するデータソースを選択します。今回は「AWS Security Hub」を選択します。
次にアカウントの構成を選択します。今回は「Single Account」を選択しています。次へを選択。
次の画面が表示されます。ここで 1-3 までのステップがログ収集に必要な前提条件だということが分かります。
ステップ1は、ユーザの AWS 環境に信頼できる IAM ロールを作成する作業になります。
- 以下画像を参考に「ロールポリシー」と「信頼関係」をコピーしておきます。「ロールポリシー」の方は、DATA_ACCOUNT_ID という項目にユーザ環境の AWS アカウント ID を置き換えておきます。
そしたら、AWS コンソールに移動して IAM ロールを作成していきます。「アクセス管理」→「ロール」を選択し、「ロールを作成」を選択します。
信頼されたエンティティタイプは「カスタム信頼ポリシー」を選択し、先ほど Splunk Cloud の Data Manager でコピーした「信頼関係」のポリシーを貼り付けます。
ロール名は、Splunk Cloud の Data Manager で指定されている通り「SplunkDMReadOnly」とします。
次にロールにアタッチするポリシーを作成します。作成したロールで「インラインポリシーを作成」を選択します。
ポリシーに Splunk Cloud の Data Manager でコピーした「ロールポリシー」を貼り付けます。
ちなみに許可されるのは次の通りです。
ポリシーの名前は特に指定が無いので、何でもいいです。「SplunkDM_Policy」としておきました。
ここまで設定出来たら、Data Manager の設定の続き(ステップ2)のために Splunk Cloud に戻ります。
ステップ2では、Data Manager で管理する名前、ログ連携する AWS アカウント ID、ログを保管するインデックスを設定します。
そしたら、ログ収集対象のリソースがあるリージョンを選択します。次に進みます。
すると、次の確認画面が表示されます。ここでもし問題がある場合は「Issue」の部分が黄色い三角マークで表示され、修正方法が表示されます。問題が無ければ次へ進みましょう。
データ収集に必要な CloudFormation(CFn)テンプレートを作成してくれます。数秒待機。
ステップ3では、CFn テンプレートを展開して、ログ収集に必要なリソースを作成していきます。「データ取り込みテンプレート」を選択してダウンロードします。
ここで注意があります。この CFn テンプレートは、他のリージョンで展開しなくてもいい IAM ロールなどを展開しておくために必ず最初に「us-east-1」で展開する必要があります。もし、他のリージョンにログソースがあるのであれば「us-east-1」で展開してから、後の手順で各リージョンに CFn テンプレートを展開していきます。
今回の場合は、ログ収集対象が「ap-northeast-1」に存在するので、「us-east-1」で1回。「ap-northeast-1」で1回。合計2回の CFn テンプレートを展開していきます。
では、AWS コンソールに戻り、リージョンを「us-east-1」に選択します。
CloudFormation の画面に移動し「スタックの作成」を選択します。先ほどダウンロードしたテンプレートファイルをアップロードします。
次に進み、スタック名を Data Manager で指定されている名称に合わせます。
タグも指定されている通りに入力します。それ以外はデフォルトのままスタックを作成してください。
「us-east-1」で作成完了させ、Data Manager の画面でセットアップを完了させます。
Data Manegement の画面に戻ってくるのですが、以下の様に Input の設定が正しくないと言われます。
まず現状確認しますと「Account Establishment Details」を見ると、「us-east-1」にはスタックが作成されていることが分かります。
ガイドに従って「AWS Setup Details」タブを選択します。(上記画像の赤枠部分)
すると、ガイド画面に再度 CFn テンプレートと、Data Manager 設定の時に選択した通りに展開すべきリージョンが表示されています。手順は「us-east-1」の時と同じですが今度は「ap-northeast-1」で展開します。
展開が完了したら、Data Manager の画面を再度更新してみてください。そうすると、ステータスが「Success」に変化しているかと思います。
これでセットアップは完了です!
作成されたリソースは、Data Manager ドキュメントの Summary of CloudFormation template resources でも記載されている通り、Lambda や Firehose が作成されており、エンドポイントは Splunk Cloud の HEC コレクターに向いています。HEC 用のトークンも作成されています。
Firehose でデモデータを配信してみました。Splunk Cloud 側でも正常にデータを収集出来ています。
また、データソースのヘルスステータスを見るダッシュボードが組み込まれており、以下のように表示してくれます。
フィルターも使えるので、時間や、最初に Data Manager で作成した時の名前を使って絞って確認することも出来ます。
まとめ
新しめの機能で、またネット上にもあまり画像付きの解説が無かったように思ったのでブログ化しました。
AWS だと、CloudWatch や Lambda、Firehose などを使ったりしてデータ収集していましたが、今後は Data Manager を使ってデータパイプラインを簡単に作成して、データ収集していただけるかと存じます。
参考元:Data Manager